《DeepWalk: online learning of social representations》
network representation
的稀疏性既是优点、也是缺点。稀疏性有助于设计高效的离散算法,但是会使统计学习中的泛化变得更加困难。network
中的机器学习应用(例如 network classification
、内容推荐、异常检测、缺失链接预测)必须能够处理这种稀疏性才能生存。
在论文 《DeepWalk: Online Learning of Social Representations》
中,作者首次将深度学习(无监督特征学习)技术引入到网络分析 (network analysis
)中,而深度学习技术已经在自然语言处理中取得了成功。论文开发了一种算法DeepWalk
,它通过对 a stream of short random walks
进行建模,从而学习图顶点的社交表示 (social representation
) 。
social representation
是捕获邻域相似性 (neighborhood similarity
)和社区成员关系 (community membership
)的顶点的潜在特征。这些潜在 representation
在低维的、连续的向量空间中对社交关系(social relation
)进行编码。
DeepWalk
将神经语言模型推广为处理由一组随机生成的游走(walks
)组成的特殊语言。这些神经语言模型已被用于捕获人类语言的语义结构(semantic structure
) 和句法结构(syntactic structure
),甚至是逻辑类比(logical analogies
) 。DeepWalk
将图作为输入,并生成潜在 representation
作为输出。
论文的方法应用于经过充分研究的空手道网络( Karate network
),其结果如下图所示。Karate network
通常以 force-directed
布局呈现,如图 a
所示。图 b
展示了论文方法的输出,其中具有两个潜在维度。除了惊人的相似性之外,我们注意到(图 b
)的线性可分部分对应于通过输入图(图 a
)中的 modularity maximization
发现的 clusters
(以不同顶点颜色表示)。下图中,注意输入图中的社区结构和 embedding
之间的对应关系。顶点颜色表示输入图的 modularity-based clustering
。
为了展示 DeepWalk
在现实世界场景中的潜力,论文评估了它在大型异质图(large heterogeneous graph
)中具有挑战性的 multi-label network classification
问题的性能。在关系分类( relational classification
)问题中,特征向量之间的链接( links
)违反了传统的独立同分布的假设。解决这个问题的技术通常使用近似推断技术(approximate inference technique
)来利用依赖信息(dependency information
)从而改善分类结果。论文通过学习图的 label-independent representation
来远离这些方法。论文的 representation
质量不受标记顶点选择的影响,因此它们可以在任务之间共享。
DepWalk
在创建社交维度( social dimensions
)方面优于其它潜在 representation
方法,尤其是在标记顶点稀疏的情况下。论文的 representation
可以通过非常简单的线性分类器(例如逻辑回归)获得强大的性能。论文的 representation
是通用的,可以与任何分类方法(包括iterative inference method
)结合使用。DeepWalk
实现了所有的这些,同时是一种可简单并行的在线算法。
论文的贡献如下:
我们引入深度学习作为分析图的工具,从而构建适用于统计建模的鲁棒的 representation
。DeepWalk
学习短的随机游走中存在的结构规律(structural regularity
)。
我们在多个社交网络上广泛评估了我们在多标签分类任务上的表现。在标签稀疏的情况下,我们展示了显著提高的分类性能。在最稀疏的问题上,我们获得了 Micro F1
的 5% - 10%
的提升。在某些情况下,即使训练数据减少 60%
,DeepWalk
的 representation
也可以胜过其它竞争对手。
我们通过使用并行实现( parallel implementation
)来构建 web-scale
图(例如 YouTube
) 的 representation
,从而证明了我们算法的可扩展性。此外,我们描述了所需的最小修改从而构建我们方法的 streaming
版本。
DeepWalk
是一种学习网络中顶点潜在 representation
的新方法。这些潜在representation
在连续向量空间中编码社交关系,从而很容易被统计模型所利用。DeepWalk
推广了语言模型和无监督特征学习(或深度学习)从单词序列到 graph
的最新进展。
DeepWalk
使用从截断的随机游走中获得的局部信息,通过将随机游走视为等价的 sentence
来学习潜在 representation
。
DeepWalk
也是可扩展(scalable
)的。它是一种在线学习算法(online learning algorithm
) ,可以构建有用的增量结果,并且可以简单地并行化。这些品质使其适用于广泛的现实世界 application
,例如 network classification
和异常检测。
DeepWalk
与以前的工作之间的主要区别可以总结如下:
DeepWalk
学习潜在的 social representation
,而不是计算 centrality statistics
(如 《Leveraging label-independent features for classification in sparsely labeled networks: An empirical study》
)、或者 partitioning statistics
(如 《Leveraging social media networks for classification》
)。
DeepWalk
不尝试扩展分类程序本身(通过 collective inference
如《Collective classification in network data》
,或者graph kernel
如 《Diffuusion kernels on graphs and other discrete input spaces》
)。
DeepWalk
提出了一种仅使用局部信息的、可扩展的、在线方法。大多数方法需要全局信息、并且是离线的。
DeepWalk
将无监督representation learning
应用于图。
接下来,我们讨论 network classification
和无监督 feature learning
方面的相关工作。
相关工作:
Relational Learning
:关系分类 relational classification
(或者集体分类 collective classification
)方法使用数据 item
之间的 links
作为分类过程的一部分。集体分类问题中的精确推断( exact inference
)是 NP-hard
问题,其解决方案主要集中在近似推断算法。这些近似推断算法可能无法保证收敛。
与我们的工作最相关的关系分类算法包括:学习clusters
(《Leveraging relational autocorrelation with latent group models》
)、在附近节点之间添加边(《Using ghost edges for classification in sparsely labeled networks》
)、使用 PageRank
(《Semi-supervised classification of network data using very few labels》
)、通过扩展关系分类来考虑额外的特征(《Multi-label relational neighbor classification using social context features》
),通过这些方法从而合并社区信息(community information
) 。
我们的工作采取了截然不同的方法。我们提出了一种学习网络结构 representation
的程序,而不是新的近似推断算法,然后可以由现有的inference procedure
(包括迭代式推断程序)来使用。
人们还提出了很多从图中生成特征的技术。和这些技术相比,我们将特征创建过程构建为 representation learning
问题。
人们也提出了 graph kernel
(《Graph kernels》
) ,从而将关系数据用作分类过程的一部分。但是,除非近似(《Fast random walk graph kernel》
),否则它的速度非常慢。我们的方法与 graph kernel
是互补的:我们没有将结构编码为核函数 kernel function
的一部分,而是学习一种 representation
,从而允许该 representation
直接用于任何分类方法的特征。
无监督特征学习 Unsupervised Feature Learning
:人们已经提出分布式 representation learning
来建模概念之间的结构关系(structural relationship
) 。这些 representation
通过反向传播和梯度下降来进行训练。由于计算成本和数值不稳定,这些技术被放弃了十几年。
最近,分布式计算允许训练更大的模型,并且用于无监督学习的数据出现增长。分布式representation
通常通过神经网络进行训练,这些神经网络在计算机视觉、语音识别、自然语言处理等不同领域取得了进步。
DeepWalk
可以挖掘图
考虑社交网络成员的分类问题。正式地,令 social network
特征
label
空间,
在传统的机器学习分类 setting
中,我们的目标是学习将 hypothesis
example dependence
的重要信息,从而实现卓越的性能。在文献中,这被称作关系分类(relational classification
)(或者集体分类)问题。
关系分类的传统方法提出将问题作为无向马尔科夫网络(undirected Markov network
)中的 inference
,然后使用迭代式近似推断算法(例如迭代式分类算法 《Iterative classification in relational data》
、吉布斯采样《Stochastic relaxation, gibbs distributions, and the bayesian restoration of images》
、或者标签松弛算法《On the foundations of relaxation labeling processes》
)来计算给定网络结构下标签的的后验分布。
我们提出了一种不同的方法来捕获网络拓扑信息(network topology information
) 。我们没有混合 label
空间从而将其视为特征空间的一部分,而是提出了一种无监督方法,该方法学习了捕获独立于 label
分布的、图结构的特征。
结构表示( structural representation
)和标记任务 (labeling task
) 的这种分离避免了迭代式方法中可能发生的级联错误( cascading error
)。此外,相同的 representation
可以用于与该网络有关的多个分类任务(这些分类任务有各自不同的 label
)。
我们的目标是学习 representation
是分布式的,意味着每个社交概念 ( social concept
)都由维度的某个子集来表达,每个维度都有助于低维空间所表达的一组社交概念的集合。
使用这些结构特征(structural feature
) ,我们将扩充属性空间从而帮助分类决策。这些结构特征是通用的,可以与任何分类算法(包括迭代式方法)一起使用。然而,我们相信这些特征的最大效用是:它们很容易与简单的机器学习算法集成。它们在现实世界的网络中可以适当地 scale
,正如我们在论文中所展示的。
我们寻求具有以下特性的 learning social representation
:
适应性( adaptability
):真实的社交网络在不断演变,新的社交关系不应该要求一遍又一遍地重新训练整个网络。
社区感知( community aware
):潜在维度之间的距离应该能够代表评估网络成员之间社交相似性(social similarity
) 的指标。
低维(low dimensional
):当标记数据稀疏时,低维模型泛化效果更好,并且加快收敛和推断速度。
连续( continuous
):除了提供社区成员(community membership
)的精细的视图之外,continuous representation
在社区之间具有平滑的决策边界,从而允许更鲁棒的分类。
我们满足这些要求的方法从短期随机游走的 stream
中学习顶点的 representation
,这是最初为语言建模而设计的优化技术。在这里,我们首先回顾随机游走和语言建模(language modeling
)的基础知识,并描述了它们的组合如何满足我们的要求。
随机游走(random walk
):我们将以顶点 root
的随机游走表示为
随机游走已被用作内容推荐(content recommendation
)和社区检测(community detection
) 中各种问题的相似性度量(similarity measure
) 。随机游走也是一类输出敏感算法(output sensitive algorithm
) 的基础,这类算法使用随机游走来计算局部社区结构信息(local community structure
) ,并且计算时间复杂度为 input graph
规模的亚线性(sublinear
) 。
正是这种与局部结构的联系促使我们使用短的随机游走流(stream of short random walks
)作为从网络中提取信息的基本工具。除了捕获社区信息之外,使用随机游走作为我们算法的基础还为我们提供了另外两个理想的特性:
首先,局部探索很容易并行化。多个随机游走器( random walkers
)(在不同的线程、进程、或者机器中)可以同时探索同一个图的不同部分。
其次,依靠从短的随机游走中获得的信息,可以在不需要全局重新计算的情况下适应图结构的微小变化。我们可以使用新的随机游走,从图变更的区域游走到整个图,从而以亚线性时间复杂度来更新已经训练好的模型。
幂律(power law
)分布:选择在线随机游走作为捕获图结构的原语 (primitive
) 之后,我们现在需要一种合适的方法来捕获这些图结构信息。
如果连通图的 degree
分布遵循幂律分布 (power law
)(也叫作 Zipf
定律),那么我们观察到顶点出现在短随机游走中的频率也遵循幂律分布。自然语言中的单词遵循类似的分布,语言模型(language modeling
)技术解释了这种分布行为。为了强调这种相似性,我们在下图中展示了两个不同的幂律分布:第一个来自一个图上的一系列短随机游走,第二个来自于英文维基百科的 100,000
篇文章的文本。图 a
给出了short random walk
中,顶点出现频次的分布。图 b
给出了英文维基百科的 10
万篇文章中,单词的频次分布。
我们工作的一个核心贡献是这样的一种思想:用于建模自然语言(其中单词频率遵循幂律分布)的技术也可以复用于建模网络中的社区结构。
接下来我们将回顾语言建模中不断发展的工作,并将其转换为学习满足我们标准的顶点 representation
。
语言模型的目标是估计特定单词序列在语料库 corpus
中出现的可能性。正式地,给定一个单词序列 vocabulary
),我们希望在整个训练语料库上最大化
最近在 representation learning
方面的工作聚焦于使用概率神经网络(probabilistic neural network
)来构建单词的 general representation
,从而将语言建模的范围扩展到其原始目的之外。
在这项工作中,我们提出了语言建模的泛化,以通过短随机游走流来探索图。这些随机游走可以被认为是一种特殊语言的短句( short sentence
)和短语 (short phrase
)。我们进行直接的类比,从而在随机游走中,给定到目前为止访问的所有顶点序列来估计观察到顶点
我们的目标是学习潜在 representation
,而不仅仅是节点共现(node co-occurrence
)的概率分布,因此我们引入一个映射函数 social representation
。
即:我们想要的是顶点
representation
,而不是预估这个随机游走序列出现的概率。
实际上,我们使用 free parameters
的矩阵
然而,随着游走序列长度的增加,计算这个目标函数变得不可行。
因为
sentence
越长,它出现的频次越低,样本过于稀疏。
最近,在语言模型中的放松条件使得这个预测问题得到了解决。
首先,我们不是使用上下文来预测缺失单词( missing word
),而是使用一个单词来预测上下文。
其次,上下文由出现在给定单词左侧和右侧的单词组成。
最后,我们消除了对问题的顺序约束( ordering constraint
)。即,模型需要最大化任何单词出现在上下文中的概率,而无需知道上下文与目标单词的偏移量。
应用到顶点建模中,这得到了优化问题:
其中
我们发现这些放松条件对于 social representation learning
是特别理想的。
首先,顺序独立性假设( order independence assumption
)更好地捕获了随机游走的 nearness
的 sense
。
其次,这种松弛条件对于通过构建一大批小模型来加速训练非常有用,因此一次给定一个顶点。
解决上式中的优化问题将得顶点representation
,这些 representation
捕获了顶点之间在局部图结构(local graph structure
)中的相似性。具有相似邻域的顶点将获得相似的 representation
(编码了 co-citation
相似性),并允许对机器学习任务进行泛化。
通过结合截断的随机游走和神经语言模型,我们制定了一种满足我们所有期望特性的方法。
该方法生成低维的社交网络 representation
,并存在于连续向量空间中。
该方法生成的 representation
对社区成员的潜在形式 latent form
进行编码。
并且,由于该方法输出有用的 intermediate representation
,因此它可以适应不断变化的网络拓扑结构。
与任何语言建模算法一样,DeepWalk
唯一需要的输入是语料库和词表 DeepWalk
将一组截断的短随机游走视为语料库,将图的顶点视为词表(DeepWalk
在不知道顶点集合的情况下也可以工作。
DeepWalk
算法主要由两部分组成:随机游走生产器、更新过程。
随机游走生成器random walk generator
:以图 root
。随机游走从最近访问的顶点的邻域中均匀采样,直到游走序列长度达到最大长度
虽然在我们的实验中,随机游走序列的长度设置为固定的(固定为 root
的传送概率 (teleport probability
),但是我们的初步结果并为表明使用重启能带来任何优势。
更新过程:基于 SkipGram
语言模型来更新参数 SkipGram
是一种语言模型,可最大化在一个句子中出现在窗口
在随机游走中,对于出现在窗口 representation
的条件下,上下文顶点
DeepWalk
算法:
输入:
图
上下文窗口尺寸
embedding size
每个节点开始的随机游走序列数量
每条随机游走序列长度
输出:顶点 representation
矩阵
算法步骤:
representation
初始化:从均匀分布中采样,得到初始的
从 binary tree
建立二叉树是为了后续
SkipGram
算法采用Hierarchical Softmax
遍历,
随机混洗顶点:
每次遍历的开始,随机混洗顶点。但是这一步并不是严格要求的,但是它可以加快随机梯度下降的收敛速度。
对每个顶点
利用随机游走生成器生成随机游走序列:
采用 SkipGram
算法来更新顶点的representation
:
SkipGram
算法:
输入:
当前的顶点 representation
矩阵
单条随机游走序列
上下文窗口尺寸
学习率
输出:更新后的顶点 representation
矩阵
算法步骤:
对每个顶点
对窗口内每个顶点
Hierarchical Softmax
: 计算 root
,
现在
我们可以通过为随机游走中的高频顶点分配树中更短的路径来进一步加快训练过程。霍夫曼编码用于减少树中高频元素的访问次数。
DeepWalk
模型参数规模为 SGD
的学习率在最初时设置为 0.025
,然后随着目前为止看到的顶点数量呈线性下降。
DeepWalk
算法整体如下图所示。
图 a
:短随机游走序列的生成过程。
图 b
:在随机游走 representation
图 c
:Hierarchical Softmax
在对应于从 root
到
representation
社交网络随机游走中的顶点频率分布和语言中的单词分布都遵循幂律分布。这会导致低频顶点的长尾效应,因此,对 worker
的情况下使用随机梯度下降的异步版本 ASGD
。
鉴于我们的更新是稀疏的,并且我们没有利用锁来访问模型共享参数,ASGD
将实现最佳收敛速度。虽然我们在单台机器上使用多线程进行实验,但是已经证明了 ASGD
具有高度可扩展性,可用于非常大规模的机器学习。
下图展示了并行化 DeepWalk
的效果。结果表明:随着我们将 worker
数量增加到 8
,处理 BlogCatalog
和 Flickr
网络的加速是一致的。结果还表明,与串行执行 DeepWalk
相比,并行化 DeepWalk
的预测性能没有损失。
这里我们讨论我们方法的一些变体,我们认为这些变体可能会引起人们的兴趣。
流式( streaming
):我们方法的一个有趣变体是流式方法,它可以在不了解整个图的情况下实现。在这个变体中,来自图中的短随机游走直接传递给 representation learning
代码,并直接更新模型。
这里需要对学习过程进行一些修改:
首先,不再使用衰减的学习率。相反,我们可以将学习率 application
中可能是值得的。
其次,我们不能再构建参数树 tree of parameters
。如果 cardinality
是已知的(或者有界),我们可以为这个最大值构建 Hierarchical Softmax tree
。当首次看到顶点时,可以将它分配给剩余的叶节点之一。如果我们有能力估计顶点分布的先验,我们仍然可以使用霍夫曼编码来减少高频元素的访问次数。
非随机的游走:有些图是用户与一系列元素(如网站上页面的导航)交互的副产品而创建的。当通过这种非随机游走的 stream
来创建图时,我们可以使用这个过程直接为建模阶段提供游走数据。以这种方式采样的图不仅会捕获与网络结构相关的信息,还会捕获与路径遍历频率相关的信息。
以我们的观点来看,这个变体还包括语言建模。sentence
可以被视为经过适当设计的语言网络的、有目的的游走,而像 SkipGram
这样的语言模型旨在捕获这种行为。
这种方法可以与流式变体结合使用,从而在不断演化的网络上训练特征,而无需显式地构建整个图。使用这种技术维护的 representation
可以实现 web-scale
的分类,而无需处理 web-scale
图的麻烦。
数据集:
BlogCatalog
数据集:由博客作者提供的社交关系网络。标签代表作者提供的主题类别。
Flickr
数据集:Flickr
网站用户之间的关系网络。标签代表用户的兴趣组,如“黑白照片”。
YouTube
数据集:YouTube
网站用户之间的社交网络。标签代表用户的视频兴趣组,如“动漫、摔跤”。
baseline
方法:为了验证我们方法的效果,我们和一些 baseline
方法进行比较。
谱聚类( SpectralClustering
):从图 normalized graph Laplacian
矩阵 representation
。使用 graph cuts
)对分类有用。
Modularity
:从图 Modularity
top-d
个特征向量,构成了图的representation
。modular graph partition
信息。使用它们作为特征假设 modular graph partition
对于分类有用。
EdgeCluster
:基于 k-means
聚类算法对图 Modularity
相比,并且可以扩展到那些超大规模的图,这些图太大而难以执行谱分解(spectral decomposition
) 。
wvRN
: weighted-vote Relational Neighbor
是一个关系分类器 (relational classier
)。给定顶点 wvRN
通过邻居结点的加权平均来预估
其中
该方法在实际网络中表现出惊人的良好性能,并被推荐为优秀的关系分类(relational classification
)的 baseline
。
Majority
:选择训练集中出现次数最多的标签作为预测结果(所有样本都预测成一个值)。
评估指标:对于多标签分类问题,我们采用 Macro-F1
和 Micro-F1
作为评估指标。
Macro-F1
:根据整体的混淆矩阵计算得到的
micro-F1
:先根据每个类别的混淆矩阵计算得到各自的
另外我们采用模型提取的特征训练 one-vs-rest
逻辑回归分类器,根据该分类器来评估结果。
我们随机采样一个比例为 10
次,并报告 Macro-F1
的平均性能和 Micro-F1
的平均性能。
注意,
DeepWalk
是无监督的representation learning
方法,因此训练过程是无需label
数据的。这里的标记数据是在无监督学习之后,利用学到的顶点representation
进行有监督分类,分类算法为逻辑回归,从而评估顶点representation
的效果。
实验配置:
对所有模型,我们使用由 LibLinear
实现的 one-vs-rest
逻辑回归进行分类。
DeepWalk
的超参数为
对于 SpectralClustering, Modularity, EdgeCluster
等方法,我们选择
BlogCatalog
数据集:我们评估
结论:
DeepWalk
性能始终优于 EdgeCluster,Modularity,wvRN
。
事实上当 DeepWalk
仅仅给出 20%
标记样本来训练的情况下,模型效果优于其它模型 90%
的标记样本作为训练集。
虽然 SpectralClustering
方法更具有竞争力,但是当数据稀疏时 DeepWalk
效果最好:对于 Macro-F1
指标,DeepWalk
效果更好;对于Micro-F1
指标,DeepWalk
效果更好。
当仅标记图中的一小部分时,DeepWalk
效果最好。因此后面实验我们更关注稀疏标记图sparsely labeled graph
。
Flickr
数据集:我们评估
在 Micro-F1
指标上,DeepWalk
比其它基准至少有 3%
的绝对提升。
在 Micro-F1
指标上,DeepWalk
只需要 3%
的标记数据就可以打败其它方法 10%
的标记数据,因此 DeepWalk
的标记样本需求量比基准方法少 60%
。
在 Macro-F1
指标上,DeepWalk
性能接近 SpectralClustring
,击败了所有其它方法。
YouTube
数据集:我们评估
由于 YouTube
规模比前面两个数据集大得多,因此我们无法运行两种基准方法 SpecutralClustering, Modularity
。
DeepWalk
性能远超 EdgeCluster
基准方法:
当标记数据只有 1%
时,DeepWalk
在 Micro-F1
指标上相对 EdgeCluster
有 14%
的绝对提升,在 Macro-F1
指标上相对 EdgeCluster
有 10%
的绝对提升。
当标记数据增长到 10%
时,DeepWalk
提升幅度有所下降。DeepWalk
在 Micro-F1
指标上相对 EdgeCluster
有 3%
的绝对提升,在 Macro-F1
指标上相对 EdgeCluster
有 4%
的绝对提升。
DeepWalk
能扩展到大规模网络,并且在稀疏标记环境中表现出色。
为评估超参数的影响,我们在 Flickr
和 BlogCatalog
数据集上进行实验。我们固定窗口大小
考察不同
图 a1
和 图 a3
考察不同 Flickr
和 BlogCatalog
数据集上模型的表现一致:模型最佳尺寸
注意:Flickr
的 1%
训练样本和 BlogCatalog
的 10%
训练样本,模型的表现差不多。
图 a2
和图 a4
考察不同
从
不同的数据集中,不同 FLICKR
包含边的数量比 BLOGCATALOG
多一个数量级。
这些结论表明:我们的方法可以得到各种size
的有用模型。另外,模型性能取决于模型看到的随机游走数量,模型的最佳维度取决于可用的训练样本量。
考察不同 b1
和 b3
考察不同 b2
和 b4
考察了不同
实验结果表明,它们的表现比较一致:增加
这些结果表明:仅需要少量的随机游走,我们就可以学习有意义的顶点潜在表示。